package org.openarchitectureware.example.dsl.contentassist.antlr.internal; 

import java.io.InputStream;
import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.xtext.parsetree.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.ui.common.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
import org.openarchitectureware.example.dsl.services.EntityModelGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

public class InternalEntityModelParser extends AbstractInternalContentAssistParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'import'", "'type'", "'entity'", "'{'", "'}'", "'extends'", "'property'", "':'", "'[]'"
    };
    public static final int RULE_ID=5;
    public static final int RULE_STRING=4;
    public static final int RULE_ANY_OTHER=10;
    public static final int RULE_INT=6;
    public static final int RULE_WS=9;
    public static final int RULE_SL_COMMENT=8;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=7;

        public InternalEntityModelParser(TokenStream input) {
            super(input);
        }
        

    public String[] getTokenNames() { return tokenNames; }
    public String getGrammarFileName() { return "../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g"; }


     
     	private EntityModelGrammarAccess grammarAccess;
     	
        public void setGrammarAccess(EntityModelGrammarAccess grammarAccess) {
        	this.grammarAccess = grammarAccess;
        }
        
        @Override
        protected Grammar getGrammar() {
        	return grammarAccess.getGrammar();
        }




    // $ANTLR start entryRuleModel
    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:55:1: entryRuleModel : ruleModel EOF ;
    public final void entryRuleModel() throws RecognitionException {
        try {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:55:16: ( ruleModel EOF )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:56:1: ruleModel EOF
            {
             before(grammarAccess.getModelRule()); 
            pushFollow(FOLLOW_ruleModel_in_entryRuleModel60);
            ruleModel();
            _fsp--;

             after(grammarAccess.getModelRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleModel67); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end entryRuleModel


    // $ANTLR start ruleModel
    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:63:1: ruleModel : ( ( rule__Model__Group ) ) ;
    public final void ruleModel() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:67:2: ( ( ( rule__Model__Group ) ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:68:1: ( ( rule__Model__Group ) )
            {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:68:1: ( ( rule__Model__Group ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:69:1: ( rule__Model__Group )
            {
             before(grammarAccess.getModelAccess().getGroup()); 
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:70:1: ( rule__Model__Group )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:70:2: rule__Model__Group
            {
            pushFollow(FOLLOW_rule__Model__Group_in_ruleModel94);
            rule__Model__Group();
            _fsp--;


            }

             after(grammarAccess.getModelAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end ruleModel


    // $ANTLR start entryRuleImport
    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:81:1: entryRuleImport : ruleImport EOF ;
    public final void entryRuleImport() throws RecognitionException {
        try {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:81:17: ( ruleImport EOF )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:82:1: ruleImport EOF
            {
             before(grammarAccess.getImportRule()); 
            pushFollow(FOLLOW_ruleImport_in_entryRuleImport119);
            ruleImport();
            _fsp--;

             after(grammarAccess.getImportRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleImport126); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end entryRuleImport


    // $ANTLR start ruleImport
    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:89:1: ruleImport : ( ( rule__Import__Group ) ) ;
    public final void ruleImport() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:93:2: ( ( ( rule__Import__Group ) ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:94:1: ( ( rule__Import__Group ) )
            {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:94:1: ( ( rule__Import__Group ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:95:1: ( rule__Import__Group )
            {
             before(grammarAccess.getImportAccess().getGroup()); 
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:96:1: ( rule__Import__Group )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:96:2: rule__Import__Group
            {
            pushFollow(FOLLOW_rule__Import__Group_in_ruleImport153);
            rule__Import__Group();
            _fsp--;


            }

             after(grammarAccess.getImportAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end ruleImport


    // $ANTLR start entryRuleType
    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:107:1: entryRuleType : ruleType EOF ;
    public final void entryRuleType() throws RecognitionException {
        try {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:107:15: ( ruleType EOF )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:108:1: ruleType EOF
            {
             before(grammarAccess.getTypeRule()); 
            pushFollow(FOLLOW_ruleType_in_entryRuleType178);
            ruleType();
            _fsp--;

             after(grammarAccess.getTypeRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleType185); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end entryRuleType


    // $ANTLR start ruleType
    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:115:1: ruleType : ( ( rule__Type__Alternatives ) ) ;
    public final void ruleType() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:119:2: ( ( ( rule__Type__Alternatives ) ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:120:1: ( ( rule__Type__Alternatives ) )
            {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:120:1: ( ( rule__Type__Alternatives ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:121:1: ( rule__Type__Alternatives )
            {
             before(grammarAccess.getTypeAccess().getAlternatives()); 
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:122:1: ( rule__Type__Alternatives )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:122:2: rule__Type__Alternatives
            {
            pushFollow(FOLLOW_rule__Type__Alternatives_in_ruleType212);
            rule__Type__Alternatives();
            _fsp--;


            }

             after(grammarAccess.getTypeAccess().getAlternatives()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end ruleType


    // $ANTLR start entryRuleSimpleType
    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:133:1: entryRuleSimpleType : ruleSimpleType EOF ;
    public final void entryRuleSimpleType() throws RecognitionException {
        try {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:133:21: ( ruleSimpleType EOF )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:134:1: ruleSimpleType EOF
            {
             before(grammarAccess.getSimpleTypeRule()); 
            pushFollow(FOLLOW_ruleSimpleType_in_entryRuleSimpleType237);
            ruleSimpleType();
            _fsp--;

             after(grammarAccess.getSimpleTypeRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSimpleType244); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end entryRuleSimpleType


    // $ANTLR start ruleSimpleType
    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:141:1: ruleSimpleType : ( ( rule__SimpleType__Group ) ) ;
    public final void ruleSimpleType() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:145:2: ( ( ( rule__SimpleType__Group ) ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:146:1: ( ( rule__SimpleType__Group ) )
            {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:146:1: ( ( rule__SimpleType__Group ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:147:1: ( rule__SimpleType__Group )
            {
             before(grammarAccess.getSimpleTypeAccess().getGroup()); 
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:148:1: ( rule__SimpleType__Group )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:148:2: rule__SimpleType__Group
            {
            pushFollow(FOLLOW_rule__SimpleType__Group_in_ruleSimpleType271);
            rule__SimpleType__Group();
            _fsp--;


            }

             after(grammarAccess.getSimpleTypeAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end ruleSimpleType


    // $ANTLR start entryRuleEntity
    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:159:1: entryRuleEntity : ruleEntity EOF ;
    public final void entryRuleEntity() throws RecognitionException {
        try {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:159:17: ( ruleEntity EOF )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:160:1: ruleEntity EOF
            {
             before(grammarAccess.getEntityRule()); 
            pushFollow(FOLLOW_ruleEntity_in_entryRuleEntity296);
            ruleEntity();
            _fsp--;

             after(grammarAccess.getEntityRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleEntity303); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end entryRuleEntity


    // $ANTLR start ruleEntity
    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:167:1: ruleEntity : ( ( rule__Entity__Group ) ) ;
    public final void ruleEntity() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:171:2: ( ( ( rule__Entity__Group ) ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:172:1: ( ( rule__Entity__Group ) )
            {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:172:1: ( ( rule__Entity__Group ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:173:1: ( rule__Entity__Group )
            {
             before(grammarAccess.getEntityAccess().getGroup()); 
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:174:1: ( rule__Entity__Group )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:174:2: rule__Entity__Group
            {
            pushFollow(FOLLOW_rule__Entity__Group_in_ruleEntity330);
            rule__Entity__Group();
            _fsp--;


            }

             after(grammarAccess.getEntityAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end ruleEntity


    // $ANTLR start entryRuleProperty
    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:185:1: entryRuleProperty : ruleProperty EOF ;
    public final void entryRuleProperty() throws RecognitionException {
        try {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:185:19: ( ruleProperty EOF )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:186:1: ruleProperty EOF
            {
             before(grammarAccess.getPropertyRule()); 
            pushFollow(FOLLOW_ruleProperty_in_entryRuleProperty355);
            ruleProperty();
            _fsp--;

             after(grammarAccess.getPropertyRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleProperty362); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end entryRuleProperty


    // $ANTLR start ruleProperty
    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:193:1: ruleProperty : ( ( rule__Property__Group ) ) ;
    public final void ruleProperty() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:197:2: ( ( ( rule__Property__Group ) ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:198:1: ( ( rule__Property__Group ) )
            {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:198:1: ( ( rule__Property__Group ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:199:1: ( rule__Property__Group )
            {
             before(grammarAccess.getPropertyAccess().getGroup()); 
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:200:1: ( rule__Property__Group )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:200:2: rule__Property__Group
            {
            pushFollow(FOLLOW_rule__Property__Group_in_ruleProperty389);
            rule__Property__Group();
            _fsp--;


            }

             after(grammarAccess.getPropertyAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end ruleProperty


    // $ANTLR start rule__Type__Alternatives
    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:211:1: rule__Type__Alternatives : ( ( ruleSimpleType ) | ( ruleEntity ) );
    public final void rule__Type__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:215:1: ( ( ruleSimpleType ) | ( ruleEntity ) )
            int alt1=2;
            int LA1_0 = input.LA(1);

            if ( (LA1_0==12) ) {
                alt1=1;
            }
            else if ( (LA1_0==13) ) {
                alt1=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("211:1: rule__Type__Alternatives : ( ( ruleSimpleType ) | ( ruleEntity ) );", 1, 0, input);

                throw nvae;
            }
            switch (alt1) {
                case 1 :
                    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:216:1: ( ruleSimpleType )
                    {
                    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:216:1: ( ruleSimpleType )
                    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:217:1: ruleSimpleType
                    {
                     before(grammarAccess.getTypeAccess().getSimpleTypeParserRuleCall_0()); 
                    pushFollow(FOLLOW_ruleSimpleType_in_rule__Type__Alternatives424);
                    ruleSimpleType();
                    _fsp--;

                     after(grammarAccess.getTypeAccess().getSimpleTypeParserRuleCall_0()); 

                    }


                    }
                    break;
                case 2 :
                    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:221:6: ( ruleEntity )
                    {
                    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:221:6: ( ruleEntity )
                    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:222:1: ruleEntity
                    {
                     before(grammarAccess.getTypeAccess().getEntityParserRuleCall_1()); 
                    pushFollow(FOLLOW_ruleEntity_in_rule__Type__Alternatives440);
                    ruleEntity();
                    _fsp--;

                     after(grammarAccess.getTypeAccess().getEntityParserRuleCall_1()); 

                    }


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end rule__Type__Alternatives


    // $ANTLR start rule__Model__Group
    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:232:1: rule__Model__Group : ( ( ( ruleImport ) )* ) ( ( ( ruleType ) )* ) ;
    public final void rule__Model__Group() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:236:1: ( ( ( ( ruleImport ) )* ) ( ( ( ruleType ) )* ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:237:1: ( ( ( ruleImport ) )* ) ( ( ( ruleType ) )* )
            {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:237:1: ( ( ( ruleImport ) )* )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:238:1: ( ( ruleImport ) )*
            {
             before(grammarAccess.getModelAccess().getImportsAssignment_0()); 
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:239:1: ( ( ruleImport ) )*
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==11) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:240:1: ( ruleImport )
            	    {
            	    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:240:1: ( ruleImport )
            	    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:241:1: ruleImport
            	    {
            	     before(grammarAccess.getModelAccess().getImportsImportParserRuleCall_0_0()); 
            	    pushFollow(FOLLOW_ruleImport_in_rule__Model__Group479);
            	    ruleImport();
            	    _fsp--;

            	     after(grammarAccess.getModelAccess().getImportsImportParserRuleCall_0_0()); 

            	    }


            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);

             after(grammarAccess.getModelAccess().getImportsAssignment_0()); 

            }

            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:247:1: ( ( ( ruleType ) )* )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:248:1: ( ( ruleType ) )*
            {
             before(grammarAccess.getModelAccess().getElementsAssignment_1()); 
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:249:1: ( ( ruleType ) )*
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( ((LA3_0>=12 && LA3_0<=13)) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:250:1: ( ruleType )
            	    {
            	    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:250:1: ( ruleType )
            	    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:251:1: ruleType
            	    {
            	     before(grammarAccess.getModelAccess().getElementsTypeParserRuleCall_1_0()); 
            	    pushFollow(FOLLOW_ruleType_in_rule__Model__Group504);
            	    ruleType();
            	    _fsp--;

            	     after(grammarAccess.getModelAccess().getElementsTypeParserRuleCall_1_0()); 

            	    }


            	    }
            	    break;

            	default :
            	    break loop3;
                }
            } while (true);

             after(grammarAccess.getModelAccess().getElementsAssignment_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end rule__Model__Group


    // $ANTLR start rule__Import__Group
    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:263:1: rule__Import__Group : ( 'import' ) ( ( ( RULE_STRING ) ) ) ;
    public final void rule__Import__Group() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:267:1: ( ( 'import' ) ( ( ( RULE_STRING ) ) ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:268:1: ( 'import' ) ( ( ( RULE_STRING ) ) )
            {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:268:1: ( 'import' )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:269:1: 'import'
            {
             before(grammarAccess.getImportAccess().getImportKeyword_0()); 
            match(input,11,FOLLOW_11_in_rule__Import__Group544); 
             after(grammarAccess.getImportAccess().getImportKeyword_0()); 

            }

            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:274:1: ( ( ( RULE_STRING ) ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:275:1: ( ( RULE_STRING ) )
            {
             before(grammarAccess.getImportAccess().getImportURIAssignment_1()); 
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:276:1: ( ( RULE_STRING ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:277:1: ( RULE_STRING )
            {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:277:1: ( RULE_STRING )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:278:1: RULE_STRING
            {
             before(grammarAccess.getImportAccess().getImportURISTRINGTerminalRuleCall_1_0()); 
            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rule__Import__Group563); 
             after(grammarAccess.getImportAccess().getImportURISTRINGTerminalRuleCall_1_0()); 

            }


            }

             after(grammarAccess.getImportAccess().getImportURIAssignment_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end rule__Import__Group


    // $ANTLR start rule__SimpleType__Group
    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:290:1: rule__SimpleType__Group : ( 'type' ) ( ( ( RULE_ID ) ) ) ;
    public final void rule__SimpleType__Group() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:294:1: ( ( 'type' ) ( ( ( RULE_ID ) ) ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:295:1: ( 'type' ) ( ( ( RULE_ID ) ) )
            {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:295:1: ( 'type' )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:296:1: 'type'
            {
             before(grammarAccess.getSimpleTypeAccess().getTypeKeyword_0()); 
            match(input,12,FOLLOW_12_in_rule__SimpleType__Group602); 
             after(grammarAccess.getSimpleTypeAccess().getTypeKeyword_0()); 

            }

            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:301:1: ( ( ( RULE_ID ) ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:302:1: ( ( RULE_ID ) )
            {
             before(grammarAccess.getSimpleTypeAccess().getNameAssignment_1()); 
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:303:1: ( ( RULE_ID ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:304:1: ( RULE_ID )
            {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:304:1: ( RULE_ID )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:305:1: RULE_ID
            {
             before(grammarAccess.getSimpleTypeAccess().getNameIDTerminalRuleCall_1_0()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__SimpleType__Group621); 
             after(grammarAccess.getSimpleTypeAccess().getNameIDTerminalRuleCall_1_0()); 

            }


            }

             after(grammarAccess.getSimpleTypeAccess().getNameAssignment_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end rule__SimpleType__Group


    // $ANTLR start rule__Entity__Group
    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:317:1: rule__Entity__Group : ( 'entity' ) ( ( ( RULE_ID ) ) ) ( ( rule__Entity__Group_2 )? ) ( '{' ) ( ( ( ruleProperty ) )* ) ( '}' ) ;
    public final void rule__Entity__Group() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:321:1: ( ( 'entity' ) ( ( ( RULE_ID ) ) ) ( ( rule__Entity__Group_2 )? ) ( '{' ) ( ( ( ruleProperty ) )* ) ( '}' ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:322:1: ( 'entity' ) ( ( ( RULE_ID ) ) ) ( ( rule__Entity__Group_2 )? ) ( '{' ) ( ( ( ruleProperty ) )* ) ( '}' )
            {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:322:1: ( 'entity' )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:323:1: 'entity'
            {
             before(grammarAccess.getEntityAccess().getEntityKeyword_0()); 
            match(input,13,FOLLOW_13_in_rule__Entity__Group660); 
             after(grammarAccess.getEntityAccess().getEntityKeyword_0()); 

            }

            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:328:1: ( ( ( RULE_ID ) ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:329:1: ( ( RULE_ID ) )
            {
             before(grammarAccess.getEntityAccess().getNameAssignment_1()); 
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:330:1: ( ( RULE_ID ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:331:1: ( RULE_ID )
            {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:331:1: ( RULE_ID )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:332:1: RULE_ID
            {
             before(grammarAccess.getEntityAccess().getNameIDTerminalRuleCall_1_0()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Entity__Group679); 
             after(grammarAccess.getEntityAccess().getNameIDTerminalRuleCall_1_0()); 

            }


            }

             after(grammarAccess.getEntityAccess().getNameAssignment_1()); 

            }

            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:338:1: ( ( rule__Entity__Group_2 )? )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:339:1: ( rule__Entity__Group_2 )?
            {
             before(grammarAccess.getEntityAccess().getGroup_2()); 
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:340:1: ( rule__Entity__Group_2 )?
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==16) ) {
                alt4=1;
            }
            switch (alt4) {
                case 1 :
                    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:340:2: rule__Entity__Group_2
                    {
                    pushFollow(FOLLOW_rule__Entity__Group_2_in_rule__Entity__Group696);
                    rule__Entity__Group_2();
                    _fsp--;


                    }
                    break;

            }

             after(grammarAccess.getEntityAccess().getGroup_2()); 

            }

            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:342:1: ( '{' )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:343:1: '{'
            {
             before(grammarAccess.getEntityAccess().getLeftCurlyBracketKeyword_3()); 
            match(input,14,FOLLOW_14_in_rule__Entity__Group709); 
             after(grammarAccess.getEntityAccess().getLeftCurlyBracketKeyword_3()); 

            }

            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:348:1: ( ( ( ruleProperty ) )* )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:349:1: ( ( ruleProperty ) )*
            {
             before(grammarAccess.getEntityAccess().getPropertiesAssignment_4()); 
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:350:1: ( ( ruleProperty ) )*
            loop5:
            do {
                int alt5=2;
                int LA5_0 = input.LA(1);

                if ( (LA5_0==17) ) {
                    alt5=1;
                }


                switch (alt5) {
            	case 1 :
            	    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:351:1: ( ruleProperty )
            	    {
            	    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:351:1: ( ruleProperty )
            	    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:352:1: ruleProperty
            	    {
            	     before(grammarAccess.getEntityAccess().getPropertiesPropertyParserRuleCall_4_0()); 
            	    pushFollow(FOLLOW_ruleProperty_in_rule__Entity__Group728);
            	    ruleProperty();
            	    _fsp--;

            	     after(grammarAccess.getEntityAccess().getPropertiesPropertyParserRuleCall_4_0()); 

            	    }


            	    }
            	    break;

            	default :
            	    break loop5;
                }
            } while (true);

             after(grammarAccess.getEntityAccess().getPropertiesAssignment_4()); 

            }

            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:358:1: ( '}' )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:359:1: '}'
            {
             before(grammarAccess.getEntityAccess().getRightCurlyBracketKeyword_5()); 
            match(input,15,FOLLOW_15_in_rule__Entity__Group747); 
             after(grammarAccess.getEntityAccess().getRightCurlyBracketKeyword_5()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end rule__Entity__Group


    // $ANTLR start rule__Entity__Group_2
    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:370:1: rule__Entity__Group_2 : ( 'extends' ) ( ( ( ( RULE_ID ) ) ) ) ;
    public final void rule__Entity__Group_2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:374:1: ( ( 'extends' ) ( ( ( ( RULE_ID ) ) ) ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:375:1: ( 'extends' ) ( ( ( ( RULE_ID ) ) ) )
            {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:375:1: ( 'extends' )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:376:1: 'extends'
            {
             before(grammarAccess.getEntityAccess().getExtendsKeyword_2_0()); 
            match(input,16,FOLLOW_16_in_rule__Entity__Group_2781); 
             after(grammarAccess.getEntityAccess().getExtendsKeyword_2_0()); 

            }

            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:381:1: ( ( ( ( RULE_ID ) ) ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:382:1: ( ( ( RULE_ID ) ) )
            {
             before(grammarAccess.getEntityAccess().getExtendsAssignment_2_1()); 
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:383:1: ( ( ( RULE_ID ) ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:384:1: ( ( RULE_ID ) )
            {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:384:1: ( ( RULE_ID ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:385:1: ( RULE_ID )
            {
             before(grammarAccess.getEntityAccess().getExtendsEntityCrossReference_2_1_0()); 
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:386:1: ( RULE_ID )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:387:1: RULE_ID
            {
             before(grammarAccess.getEntityAccess().getExtendsEntityIDTerminalRuleCall_2_1_0_1()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Entity__Group_2804); 
             after(grammarAccess.getEntityAccess().getExtendsEntityIDTerminalRuleCall_2_1_0_1()); 

            }

             after(grammarAccess.getEntityAccess().getExtendsEntityCrossReference_2_1_0()); 

            }


            }

             after(grammarAccess.getEntityAccess().getExtendsAssignment_2_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end rule__Entity__Group_2


    // $ANTLR start rule__Property__Group
    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:401:1: rule__Property__Group : ( 'property' ) ( ( ( RULE_ID ) ) ) ( ':' ) ( ( ( ( RULE_ID ) ) ) ) ( ( ( ( '[]' ) ) )? ) ;
    public final void rule__Property__Group() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:405:1: ( ( 'property' ) ( ( ( RULE_ID ) ) ) ( ':' ) ( ( ( ( RULE_ID ) ) ) ) ( ( ( ( '[]' ) ) )? ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:406:1: ( 'property' ) ( ( ( RULE_ID ) ) ) ( ':' ) ( ( ( ( RULE_ID ) ) ) ) ( ( ( ( '[]' ) ) )? )
            {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:406:1: ( 'property' )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:407:1: 'property'
            {
             before(grammarAccess.getPropertyAccess().getPropertyKeyword_0()); 
            match(input,17,FOLLOW_17_in_rule__Property__Group847); 
             after(grammarAccess.getPropertyAccess().getPropertyKeyword_0()); 

            }

            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:412:1: ( ( ( RULE_ID ) ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:413:1: ( ( RULE_ID ) )
            {
             before(grammarAccess.getPropertyAccess().getNameAssignment_1()); 
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:414:1: ( ( RULE_ID ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:415:1: ( RULE_ID )
            {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:415:1: ( RULE_ID )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:416:1: RULE_ID
            {
             before(grammarAccess.getPropertyAccess().getNameIDTerminalRuleCall_1_0()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Property__Group866); 
             after(grammarAccess.getPropertyAccess().getNameIDTerminalRuleCall_1_0()); 

            }


            }

             after(grammarAccess.getPropertyAccess().getNameAssignment_1()); 

            }

            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:422:1: ( ':' )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:423:1: ':'
            {
             before(grammarAccess.getPropertyAccess().getColonKeyword_2()); 
            match(input,18,FOLLOW_18_in_rule__Property__Group884); 
             after(grammarAccess.getPropertyAccess().getColonKeyword_2()); 

            }

            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:428:1: ( ( ( ( RULE_ID ) ) ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:429:1: ( ( ( RULE_ID ) ) )
            {
             before(grammarAccess.getPropertyAccess().getTypeAssignment_3()); 
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:430:1: ( ( ( RULE_ID ) ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:431:1: ( ( RULE_ID ) )
            {
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:431:1: ( ( RULE_ID ) )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:432:1: ( RULE_ID )
            {
             before(grammarAccess.getPropertyAccess().getTypeTypeCrossReference_3_0()); 
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:433:1: ( RULE_ID )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:434:1: RULE_ID
            {
             before(grammarAccess.getPropertyAccess().getTypeTypeIDTerminalRuleCall_3_0_1()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Property__Group907); 
             after(grammarAccess.getPropertyAccess().getTypeTypeIDTerminalRuleCall_3_0_1()); 

            }

             after(grammarAccess.getPropertyAccess().getTypeTypeCrossReference_3_0()); 

            }


            }

             after(grammarAccess.getPropertyAccess().getTypeAssignment_3()); 

            }

            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:442:1: ( ( ( ( '[]' ) ) )? )
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:443:1: ( ( ( '[]' ) ) )?
            {
             before(grammarAccess.getPropertyAccess().getManyAssignment_4()); 
            // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:444:1: ( ( ( '[]' ) ) )?
            int alt6=2;
            int LA6_0 = input.LA(1);

            if ( (LA6_0==19) ) {
                alt6=1;
            }
            switch (alt6) {
                case 1 :
                    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:445:1: ( ( '[]' ) )
                    {
                    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:445:1: ( ( '[]' ) )
                    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:446:1: ( '[]' )
                    {
                     before(grammarAccess.getPropertyAccess().getManyLeftSquareBracketRightSquareBracketKeyword_4_0()); 
                    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:447:1: ( '[]' )
                    // ../org.openarchitectureware.example.dsl.ui/src-gen/org/openarchitectureware/example/dsl/contentassist/antlr/internal/InternalEntityModel.g:448:1: '[]'
                    {
                     before(grammarAccess.getPropertyAccess().getManyLeftSquareBracketRightSquareBracketKeyword_4_0()); 
                    match(input,19,FOLLOW_19_in_rule__Property__Group940); 
                     after(grammarAccess.getPropertyAccess().getManyLeftSquareBracketRightSquareBracketKeyword_4_0()); 

                    }

                     after(grammarAccess.getPropertyAccess().getManyLeftSquareBracketRightSquareBracketKeyword_4_0()); 

                    }


                    }
                    break;

            }

             after(grammarAccess.getPropertyAccess().getManyAssignment_4()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end rule__Property__Group


 

    public static final BitSet FOLLOW_ruleModel_in_entryRuleModel60 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleModel67 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Model__Group_in_ruleModel94 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImport_in_entryRuleImport119 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleImport126 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Import__Group_in_ruleImport153 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleType_in_entryRuleType178 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleType185 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Type__Alternatives_in_ruleType212 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSimpleType_in_entryRuleSimpleType237 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSimpleType244 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__SimpleType__Group_in_ruleSimpleType271 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEntity_in_entryRuleEntity296 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEntity303 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__Group_in_ruleEntity330 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleProperty_in_entryRuleProperty355 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleProperty362 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Property__Group_in_ruleProperty389 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSimpleType_in_rule__Type__Alternatives424 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEntity_in_rule__Type__Alternatives440 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImport_in_rule__Model__Group479 = new BitSet(new long[]{0x0000000000003802L});
    public static final BitSet FOLLOW_ruleType_in_rule__Model__Group504 = new BitSet(new long[]{0x0000000000003002L});
    public static final BitSet FOLLOW_11_in_rule__Import__Group544 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_rule__Import__Group563 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_12_in_rule__SimpleType__Group602 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__SimpleType__Group621 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_13_in_rule__Entity__Group660 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__Entity__Group679 = new BitSet(new long[]{0x0000000000014000L});
    public static final BitSet FOLLOW_rule__Entity__Group_2_in_rule__Entity__Group696 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_rule__Entity__Group709 = new BitSet(new long[]{0x0000000000028000L});
    public static final BitSet FOLLOW_ruleProperty_in_rule__Entity__Group728 = new BitSet(new long[]{0x0000000000028000L});
    public static final BitSet FOLLOW_15_in_rule__Entity__Group747 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_16_in_rule__Entity__Group_2781 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__Entity__Group_2804 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_17_in_rule__Property__Group847 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__Property__Group866 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_rule__Property__Group884 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__Property__Group907 = new BitSet(new long[]{0x0000000000080002L});
    public static final BitSet FOLLOW_19_in_rule__Property__Group940 = new BitSet(new long[]{0x0000000000000002L});

}